#if !defined(__APP_BUFFER)
#define __APP_BUFFER

#define BUFFER_SIZE 1024

#include <pthread.h>

typedef struct {
    char *data_ptr;//数据指针
    int  buff_data_len; //当前数据长度
    int  buff_total_len;//总长度
} sub_buffer_t;

typedef struct {
   sub_buffer_t *sub_buffers[2]; // 子缓冲区数组 2个长度
   int read_index ;   //  读缓冲区的数组下标
   int write_index ;   //  写缓冲区的数组下标
   pthread_mutex_t read_lock; //读锁
   pthread_mutex_t swap_lock; //交换锁
} app_buffer_t; 



/**
 * 缓冲区的初始化
 */
app_buffer_t *app_buffer_init();

/**
 * 缓冲区的写操作
 * @return 写入成功返回0，失败返回-1
 */
int app_buffer_write(app_buffer_t *buffer, char *data, int data_len);

/**
 * 缓冲区的读操作
 * @return 读出成功返回 实际读出的长度，失败返回-1
 */
int app_buffer_read(app_buffer_t *buffer, char *data_buff, int buff_len);


/** 缓冲区销毁
 */
void app_buffer_destroy(app_buffer_t *buffer);

#endif // __APP_BUFFER
